package com.chenxys.algorithm.newbie;

/**
 * <p>
 *      给定一个函数，得到0的概率为p，得到1的概率为1-p[概率看不到]，现在需要做到得到0和得到1等概率
 * </p>
 *
 * @author Chenxys
 * @version V1.0
 * @Package com.chenxys.algorithm.newbie
 * @date 12/24/23 9:47 PM
 * @Copyright ©
 */
public class RandToRandV2 {
    /**
     * <p>
     *     给定函数，以84%的概率返回0，以16%的概率返回1
     * </p>
     * @return 以固定概率返回一个0和1之间的一个数
     */
    public static int x(){
        return Math.random() < 0.84 ? 0 : 1;
    }

    /**
     * <p>
     *     等概率返回0和1
     * </p>
     * @return 等概率返回0和1
     */
    public static int y(){
        int ans = 0;
        // 如果第一次得到的结果等于第二次的结果，重新生成
        /*
         * 0 0 重做
         * 1 1 重做
         * 1 0
         * 0 1
         */
        do {
            ans = x();
        } while (ans == x());
        // ans = 0 1; 1 0
        return ans;
    }
}
